<?php
/*--------------------------------------------------------------
  ZeroMail  ver1.2(2010.3.5)
  
  @author(http://tenderfeel.xsrv.jp/)
  @お問い合わせ：tenderfeel@gmail.com
  
  文字コードUTF-8。
  UTF-8以外にする場合は、文字コード設定を変更すること。
  PHPバージョン4.3.0以下だとエラーが出るかもしれない。
  PHPのmail()関数が使えないとメール送信できない。
  PHP5.0.0以上での使用を推奨。
  
  ★予約されているname値
  下記name値は状態に関係なくチェックする。
  文字列が含まれていればちょっと違っても有効（name2など）
  
  name="name"　名前（必須入力にするかどうか、日本語の有無）
  name="message"　メッセージ（文字総数、禁止語句、日本語の有無）
  name="email"　メールアドレス（必須。文型チェックと使用文字制限）
  name="tel"　電話番号(半角数字とハイフンの組み合わせ）
  name="url"　URL（http://から始まる文字列。文型チェック）
  name="zipcode"  郵便番号（半角数字とハイフンで８文字）
  
  name="reply" または name="Reply" 自動返信するかどうか
  自動返信はこのファイルでtrueにした場合、name値の有無関係なく返信する。
  このファイルでtrueにせず、name="reply"のフォームを設置すると
  入力者の希望で自動返信するようになる。
  
  ○チェックボックスはnameの値末尾に[]をつけること。
 　<input name="check[]" />
 　必須の指定は<input type="hidden" name="require" value="name値,name値" />で行います。
  
  ★条件設定
  name値の後ろにアンダーバーでオプション値を付ける事で
  対応したチェックと変換を行う。
  複数同時につける場合は後ろに繋げる。
  
  name="hoge_req"　_reqで必須入力にする
  name="hoge_num"　_numで数字入力のみ許可（全角は半角に変更）
  name="hoge_eng"　_engで半角英数のみ許可（全角は半角に変更）
  name="hoge_jpz"　_jpzで全角に自動変換
  name="hoge_jpk"　_jpkでカタカナのみ許可
  name="hoge_jph"　_jphでひらがなのみ許可
  name="hoge_jpa"　_jpaでひらがなorカタカナのみ許可
 
　★ファイル構成
	zeromail.php　本体
	init.php　設定ファイル
	confim.php　確認画面出力用
	
	zeromail.css　スタイルシート
	contact.html　入力画面
	check.php　確認画面
	completion.html　送信完了画面
	
	[Ajax用]
	mootools-1.2.4-core.js　MooToolsのコアファイル
	mootools-formpack.js　Form.Validator、Form.Requestほか色々
	zeromail-ajax.js 動作に関する設定とソース
	
	※入力・確認・送信完了は別ディレクトリでも動作する。
	※Ajax用jsファイルは使う時だけでＯＫ
	
　●確認画面（check.php）について
	先頭に必ずconfim.phpを呼び出すrequire_once()を記述する。
	確認を表示するConfDisp();と、ボタンを表示するButton();をform内に記述する。
	actionはzeromail.phpにする。
	
  ★必要に応じて各テンプレート、エラーメッセージを変更する。
  

　★複数設置について
　　メールフォームの複数設置は、次の手順で可能。

	1.２つ目以降のフォームに<input type="hidden" name="id" value="2" />を追加
	　name="id"でvalueがフォームのIDになる。IDは半角英数のみ。
	
　　2.init.phpを複製する。
    3.複製したinit.phpにnameと同じidを付け足す。（init2.php）
	4.基本設定を変更する

　**************************************************************
	
  ★ファイル添付機能

　　○一時保存ディレクトリの作成
	添付ファイルとしてアップロードされたファイルを一時的に保存するディレクトリが必要です。
	添付ファイル機能を使用する場合には必ず作成してください。
	
	○入力フォーム
	添付ファイル機能を使う場合はエンコードタイプの指定が必須になります。
	fileタグのenctype属性をmultipart/form-dataにしてください。
	
	☆利用上の注意：
	一時保存ディレクトリには内容確認画面を表示した時点でファイルが保存されます。
	これらのファイルは内容確認時とメール送信時に一括削除されますが、
	内容確認→戻る→ウィンドウを閉じるか別ページに移動
	という行動をした場合ファイルが削除されません。
	削除されなかったファイルが溜まるとサーバー容量を圧迫するので、
	定期的にディレクトリ内を確認＆掃除してください。
	
  **************************************************************
  
  ★Ajaxへの対応について
  
  POSTされるデータの中にnoscript=false(文字列)があるとAjaxによる通信とみなし
  確認画面や完了画面にリダイレクトを行わずに結果をprint出力します。
  noscript=trueもしくはPOSTされるデータの中にnoscriptというキーが含まれていない場合は
  Ajaxを利用していても通常動作と同じくページ遷移を行います。
　　
--------------------------------------------------------------*/
//基本設定（右側のみ変更すること）

//文字コード（"UTF-8,EUC-JP,SJIS"）
define('TEXTCODE','UTF-8');

//フォームデータを受け取るメールアドレス
define('MAILTO','info@example.com');

//差出人名
define('FROMNAME',"SiteName");

//受け取る時の件名
define('MAILSUBJECT','フォームから送信がありました');	

//自動返信の件名
define('REPSUBJECT','[SiteName]送信内容控え');

//自動返信
//trueにした場合はフォームでのチェックの有無関係なく返信する
//下記設定に関係なくメールアドレスが必須入力になる
define('REPLY',false);

//メアドを必須項目にするかどうか（必須にする場合はtrue）
define('EMAILCHECK',true);

//返信メールに添えるメッセージ（ヘッダ）
$replycomment=<<<EOM
【このメールはシステムからの自動返信です】

お問い合わせありがとうございました。
以下の内容で送信いたしました。
────────────────────────────────────
EOM;

//返信メールに添える署名（フッタ）
$replyfoot= <<<EOM
────────────────────────────────────
株式会社Hoget
〒102-4567　穂下市穂下町1-23
TEL:0123-4567890
────────────────────────────────────
EOM;

//BCCで受け取りが必要な場合はアドレスを設定
define('BCC','');

//確認画面（zeromail.phpからの相対パス）
define('CHECKPAGE','check.php');

//送信完了で表示するページ（zeromail.phpからの相対パス）
define('SUCCESS','completion.html');

//Ajax送信完了後のメッセージ
$endMassage = "<div class=\"success\"><p>送信しました</p></div>";

//確認画面のフォームデータ出力形式（空はpタグ）
//Table →テーブル行（th=項目名 td=値）
//List → 定義リスト（dt=項目名 dd=値）
define('VIEWSTYLE','Table');

//inputのnameとその名称設定
//'name'=>'名称'で１セット。一番最後には,をつけない。
//ここで書いた並び順が、確認画面と送信メール本文に反映される。
$inputs = array(
	'name'=>'お名前',
	'name2'=>'ふりがな',
	'email'=>'E-Mail',
	'zipcode'=>'郵便番号',
	'address'=>'住所',
	'tel'=>'電話番号',
	'url'=>'URL',
	'message'=>'お問い合わせ内容',
	'cont'=>'ご連絡方法',
	'time'=>'ご連絡希望時間',
	'timetxt'=>'ご連絡希望時間（詳細）',
	'tmpfile'=>'添付ファイル',
	'tmpfile2'=>'添付ファイル2'
);

/*-----------------------------------------------------
  ファイル添付機能
------------------------------------------------------*/

//ファイル添付機能を使うかどうか（trueにしなければ送信しない）
define('FILETEMP',true);

//ファイルの最大サイズ(kb)
define("MAXSIZE",300);

//添付ファイルの一時保存ディレクトリ
define("UPLOADPASS","upfile/");

/*--------------------------------------------------------------
　スパム対策設定
--------------------------------------------------------------*/

//nameを必須項目にするかどうか（必須にする場合はtrue）
define('NAMECHECK',true);

//半角英数の名前を許可するかどうか（許可する場合はtrue）
define('ALPHANAME',false);

//リファラーチェックするかどうか
//trueにした場合は下記で設定したページ以外からの送信をブロックする。
//下のフルパス設定もすること。
define('REFCHECK',false);

//入力フォームのパス
$formURL="";

//本文のリンク記述許可数（以下）
$alink = 1;

//メッセージ欄の禁止語句
//あんまり登録しすぎると処理が重くなるので注意
$blocktxt =array('死','death','porno','sex','pill','広告','fuck','<script','<object');

//送信ブロックするIPアドレス
$blockIP = array();

/*-----------------------------------------------------
  画面出力用関数
------------------------------------------------------*/

//エラー画面
//$title＝タイトル　$err＝エラーメッセージ出力

function ErrerDisp($err){
	$scriptver = convert_encode(VERSION);
	$scriptname = convert_encode(SCRIPT);
	$err = convert_encode($err);
	include("error.php");
	exit;
}

//確認画面のメッセージ
function Message(){
	if($_SESSION['Err']>1){
		$str = '<span class="err"><noscript>ブラウザボタンで</noscript>前のページに戻り、入力エラーを修正してください。</span>';
	}else{
		$str ='<span class="conf">入力内容に間違いが無ければ、送信ボタンを押してください。</span>';
	}
	
	echo convert_encode($str);
}

//確認画面送信ボタン（hiddenとsession_unsetは消さないこと。）
function Button(){

if($_SESSION['Err']>1){
	$str = "<script type=\"text/javascript\">\n//<![CDATA[\ndocument.write('<button id=\"myreset\" type=\"button\" onclick=\"history.back()\">入力画面に戻る</button>');\n//]]>\n</script>";
	$str .= '
	<p class="zm_copyright"><a href="http://tenderfeel.xsrv.jp/zeromail/" title="'.SCRIPT.' Home" rel="bookmark">'.SCRIPT.' ver'.VERSION.'</a></p>';
	session_unset();
}else{
	$str = '<input name="mode" type="hidden" id="mode" value="Send" /><button id="submit" type="submit">この内容で送信</button>';
	$str .= "<script type=\"text/javascript\">\n//<![CDATA[\ndocument.write('<button id=\"myreset\" type=\"button\" onclick=\"history.back()\">入力画面に戻る</button>');\n//]]>\n</script>";
	$str .= '<p class="zm_copyright"><a href="http://tenderfeel.xsrv.jp/zeromail/" title="'.SCRIPT.' Home" rel="bookmark">'.SCRIPT.' ver'.VERSION.'</a></p>';
}

	echo convert_encode($str);
}

/*--------削除禁止------------------------------------------*/
define("SCRIPT","ZeroMail");
define("VERSION","1.2");
//エンコード変換
function convert_encode($str){
	return mb_convert_encoding($str,TEXTCODE,"UTF-8");
}
/*----------------------------------------------------------*/
?>